import torch
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import time
from fastai.vision.all import *
Assignment 3
이미지분석
assignment 3
1
. 크롤링을 통한 이미지 분석 및 CAM
(1)
두 가지 키워드로 크롤링을 수행하여 이미지자료를 모아라. (키워드는 각자 마음에 드는 것으로 설정할 것)
힌트1: hynn
, iu
라는 키워드로 크롤링하여 이미지자료를 모으는 코드
# 크롤링에 필요한 준비작업들
#!pip install -Uqq duckduckgo_search
from duckduckgo_search import ddg_images
from fastdownload import download_url
from fastcore.all import *
def search_images(term, max_images=200): return L(ddg_images(term, max_results=max_images)).itemgot('image')
# 폴더만드는코드 -- 사실 손으로 만들어도 무방함..
!mkdir images
!mkdir images/train
!mkdir images/test
!mkdir images/train/iu
!mkdir images/train/hynn
!mkdir images/test/iu
!mkdir images/test/hynn
='./images/train/iu',urls=search_images('iu',max_images=200)) # iu 라는 키워드로 200개 이미지 크롤링 -> ./images/train/iu 에 저장
download_images(dest10) # 서버과부하를 위한 휴식코드
time.sleep(='./images/train/hynn',urls=search_images('hynn',max_images=200)) # hynn 이라는 키워드로 200개 이미지 크롤링 -> ./images/train/hynn 에 저장
download_images(dest10) # 서버과부하를 위한 휴식코드
time.sleep(='./images/train/iu',urls=search_images('iu kpop',max_images=200)) # iu kpop 이라는 키워드로 200개 이미지 크롤링 -> ./images/train/iu 에 저장
download_images(dest10) # 서버과부하를 위한 휴식코드
time.sleep(='./images/train/hynn',urls=search_images('hynn kpop',max_images=200)) # hynn kpop 이라는 키워드로 200개 이미지 크롤링 -> ./images/train/hynn 에 저장
download_images(dest10) # 서버과부하를 위한 휴식코드 time.sleep(
='./images/test/iu',urls=search_images('iu photo',max_images=50)) # iu photo 라는 키워드로 50개 이미지 크롤링 -> ./images/test/iu 에 저장
download_images(dest10) # 서버과부하를 위한 휴식코드
time.sleep(='./images/test/hynn',urls=search_images('hynn photo',max_images=50)) # hynn photo 라는 키워드로 50개 이미지 크롤링 -> ./images/test/hynn 에 저장
download_images(dest10) # 서버과부하를 위한 휴식코드 time.sleep(
힌트2: 불량이미지 삭제
= verify_images(get_image_files('./images'))
bad_images bad_images
(#11) [Path('images/train/iu/b6f25ccd-4629-4686-8867-ea2b0de61e9e.jpg'),Path('images/train/iu/3bd8e46c-bb07-43ea-8e1a-5772e2ce25a1.jpg'),Path('images/train/iu/3970a84d-4625-435c-bc1d-1446b2b00709.jpg'),Path('images/train/iu/e794b8bd-78f9-43f0-a3a8-21d688a551fd.jpg'),Path('images/train/hynn/a26b0c36-8188-4c46-b9f5-03c46b0ad863.png'),Path('images/train/hynn/4024807e-da9a-45e6-a238-f5c3f66a043e.jpg'),Path('images/train/hynn/356d6cbb-b091-4ffb-8006-6e762947f7b3.jpg'),Path('images/train/hynn/4af71c78-5ed5-429b-aa15-92d24af461a5.jpg'),Path('images/train/hynn/d0892ddb-77f3-4ef6-98f6-09e8b53a9ea1.png'),Path('images/train/hynn/9959d239-6157-47f3-a6f5-318b6f00ca7d.jpg')...]
- 불량이미지 목록
map(Path.unlink) bad_images.
(#11) [None,None,None,None,None,None,None,None,None,None...]
- 불량이미지는 dls를 불러올때 방해되므로 제거
(2)
ImageDataLoaders.from_folder 를 이용하여 dls를 만들어라.
힌트1: dls를 만드는 코드
= ImageDataLoaders.from_folder(path = './images', train='train',valid='test',item_tfms=Resize(512),bs=8) dls
dls.show_batch()
(3)
resnet34를 이용하여 학습하라.
(4)
CAM (class activation mapping)을 이용하여 (3)의 모형의 판단근거를 시각화하라.
2
. 다음을 읽고 참거짓을 판단하여라.
(1)
아래의 레이어에 의하여 수행되는 변환은 선형변환이다.
3,16,(5,5)) torch.nn.Conv2d(